// 为服务端打造的入口文件，用于保证服务所需的Vue实例和main.js里面的Vue实例时同一个
// import { reject, resolve } from 'core-js/fn/promise'
import {createApp} from './main'


export default context => { // 生成vue实例,给服务端用的
    return new Promise((resolve, reject) => {
        const app = createApp()
        const router = app.$router

        const { url } = context // 服务端传递过来的参数
        const { fullPath } = router.resolve(url).route

        if (fullPath !== url) { // 判断当前路由在vue实例中是否存在
            return reject({
                url: fullPath
            })
        }

        router.push(url) // 把服务端的路径设置为当前的路由

        router.onReady(() => {
            const matchedComponents = router.getMatchedCcomponents() // 获取前端路由里面的配置
            if(!matchedComponents.length) {
                return reject({
                    code: 404
                })
            }
            resolve(app)
        }, reject)
    })
}